/**
 * Copyright (c) 2015 Baidu. All Rights Reserved.
 *
 * @file 用于处理JSON字段名
 * @author yuanguozheng
 */
var config = require('./config');
var _ = require('node-plus-string');

/**
 * 处理变量名
 *
 * @param {string} str 原始字符串
 * @param {string=} lang 语言
 * @return {string} 处理后的变量名
 */
function normalVariable(str, lang) {
    if (str != null && str !== '') {
        switch (lang) {
            case 'java':
            case 'cs':
                return _.classify(str);
                break;
            case 'oc':
                return _.camelize(str);
                break;
            default:
                return _.camelize(str);
                break;
        }
    }
}

/**
 * 处理JSON中键的名称，转为带有后缀类名
 *
 * @param {string} str 键的名称
 * @return {string} 处理后的类名
 */
function normalClass(str) {
    if (str != null && str !== '') {
        var suffix = config.projectConfig('suffix');
        if (!str.endsWith(suffix)) {
            return _.classify(str) + suffix;
        }
        return _.classify(str);
    }
}

/**
 * 处理JSON中键的名称，转为带有前缀的类名
 *
 * @param {string} str 键的名称
 * @return {string} 处理后的类名
 */
function prefixClass(str) {
    if (str != null && str !== '') {
        var prefix = config.projectConfig('prefix');
        if (!str.startsWith(prefix)) {
            return prefix + normalClass(str) + ' *';
        }
        return normalClass(str) + ' *';
    }
}

module.exports = {
    v: normalVariable,
    java: normalClass,
    cs: normalClass,
    oc: prefixClass
};